package com.hsnn.medstgmini.pro.base.dao;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.dict.model.DicSys;
import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpec;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelation;
import com.hsnn.medstgmini.pro.base.model.BaseGoods;
import com.hsnn.medstgmini.pro.base.model.FilesSaveInfo;
import com.hsnn.medstgmini.pro.base.model.form.BaseDelrelationForm;
import com.hsnn.medstgmini.pro.project.model.BidProject;
import com.hsnn.medstgmini.pro.project.model.BidProjectDetails;
import com.hsnn.medstgmini.sys.model.SysImportFileInfo;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.trading.pur.model.form.DrugNoJNoX;
import com.hsnn.medstgmini.util.Pagination;

public interface BaseGoodsDao {
	/**
	 * 
	 *@category 跳转到商品列表页面
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:52:48
	 *@param form
	 *@return
	 */
	public Pagination getDataList(Pagination page);
	
	/**
	 * @category 卫生局查看商品目录
	 * @date 2015年11月16日
	 * @param page
	 * @return
	 */
	Pagination getGoodsListByWSJ(Pagination page, SysUser loginUser);
	
	/**
	 * 
	 *@category 启用停用
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:53:29
	 *@param goodsCode 商品码
	 *@param status 1：启用，0：停用
	 *@return
	 */
	public void switchStatus(String goodsCode,Short status, String updUser);
	/**
	 * 
	 *@category 批量启用停用
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:54:03
	 *@param list 需要启用、停用的数据
	 *@return
	 */
	public void batchSwitchStatus(List<BaseGoods> list);
	
	public void uploadFile(FilesSaveInfo info);
	
	public FilesSaveInfo getFilesSaveInfoById(String id);
	/**
	 * 记录上传文件到表中
	 * @param info
	 */
	public void updateFiles(FilesSaveInfo info);
	public List<?> getProjectByName(String projectName);
	public BidProjectDetails getProjDetail(String projId);
	
//	public void updateImportFileStatus(int status,String fileId);
	/**
	 * 
		 * 
		 *@category 根据药品编码获取产品信息
		 *@author 邱磊
		 *@date 2015年11月11日 上午11:00:36
		 *@param 
		 *@return List<?>
	 */
	public List<?> getProDrugByDrugCode(String drugCode);
	/**
	 * 
		 * 
		 *@category 根据项目ID与品规Id查询采购项目药品
		 *@author 邱磊
		 *@date 2015年11月11日 上午11:13:29
		 *@param 
		 *@return List<?>
	 */
	public List<?> getPorjDrug(String projId,String qualityspecid);
	
	
	public List<?> getHaveGoodsInfo(Map<String, String> map, BidProjectDetails detail);
	public List<?> getWaitGoodsInfo(Map<String, String> map, BidProjectDetails detail, String fileId);
	public void addImportGoods(Map<String, Object> pmap, Map<String, Object> dmap, Map<String, Object> qmap, Map<String, Object> area, Map<String, Object> catcomp, Map<String, String> map, SysImportFileInfo info);
	
	public void deleteImportGoods(String fileId);
	/**
	 * 
		 * 
		 *@category 根据品规ID获取品规信息
		 *@author 邱磊
		 *@date 2015年11月11日 上午11:21:01
		 *@param 
		 *@return List<?>
	 */
	public StdDrugQualitySpec getQualitySpecById(String id);
	/**
	 * 
	 *@category 新增商品
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:54:37
	 *@param data
	 *@return
	 */
	public void addData(BaseGoods data);
	/**
	 * 
	 *@category 根据商品编码查询商品信息
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:06:42
	 *@param goodsCode
	 *@return
	 */
	public BaseGoods getBaseGoodsById(String id);
	/**
	 * 
	 *@category 根据名字查询商品分类value
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:07:15
	 *@param name
	 *@return
	 */
	public DicSys getDicSysByName(String name);
	/**
	 * 
	 *@category 批量导入
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:55:31
	 *@param list 有效数据List
	 *@return
	 */
	public void bathImport(List<BaseGoods> list);
	/**
	 * 
	 *@category 查询所有的商品
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:07:54
	 *@return
	 */
	public List<BaseGoods> getBaseGoodsList();
	/**
	 * 
	 *@category 查询所有的药品
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:08:13
	 *@return
	 */
	public List<Object[]> getStdDrugList();
	public Object[] getStdDrugByCode(String drugCode);
	/**
	 * 
	 *@category 查询所有的项目
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:08:27
	 *@return
	 */
	public List<BidProject> getBidProjectList();
	/**
	 * 
	 *@category 查询所有的商品分类
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:08:44
	 *@return
	 */
	public List<DicSys> getDicSysList();
	/**
	 * 
	 *@category 获取生产企业设置商品配送关系列表
	 *@author 邱磊
	 *@date 2015年6月17日 上午11:09:48
	 *@param page
	 *@return
	 */
	Pagination getProDelDrugDataList(Pagination page);
	/**
	 * 
	 *@category 根据区域设置配送企业列表
	 *@author 邱磊
	 *@date 2015年6月17日 下午4:22:16
	 *@return
	 */
	Pagination getBaseGoodsDelByAreaList(Pagination page);
	/**
	 * 
	 *@category 根据区域设置配送企业
	 *@author 邱磊
	 *@date 2015年6月17日 下午4:58:22
	 *@param list
	 *@return
	 */
	public void setDelByArea(List<BaseDelrelation> list, Map<String, String> map);
	public void setDelByComp(List<BaseDelrelation> list, Map<String, String> map);
	/**
	 * 
	 *@category 解除已设置配送企业
	 *@author 邱磊
	 *@date 2015年6月17日 下午4:58:22
	 *@param list
	 *@return
	 */
	void removeDel(Pagination page);
	/**
	 * 
	 *@category 根据企业设置配送区域的区域
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:55:56
	 *@param page 
	 *@return
	 */
	public Pagination  getAreaList(Pagination page);
	/**
	 * 
	 *@category 查询当前生产企业的所有药品配送关系
	 *@author 邱磊
	 *@date 2015年6月18日 上午9:59:52
	 *@param page
	 *@return
	 */
	public Pagination getBaseDelByCompList(Pagination page);
	public Pagination getBaseDelCentreByCompList(Pagination page);
	/**
	 * 
	 *@category 查询配送关系日志列表
	 *@author 邱磊
	 *@date 2015年6月18日 上午11:21:20
	 *@param page
	 *@return
	 */
	public Pagination getBaseDelByCompLogList(Pagination page);
	public Pagination getSetDelComp(Pagination page);
	public Pagination getBaseDelerationLogList(Pagination page);
	public Pagination getDelComp(Pagination page);
	public int getAreaDelCount(String areaCode,String goodsCode);
	
	public int getAreaMaxDelCount();
	
	public Pagination getDelArea(Pagination page);
	public Pagination getSetDelArea(Pagination page);
	public Pagination getSetDelAreaLog(Pagination page);
	public Map<String, Object> getBaseGoodsByCode(String goodsCode);
	/**
	 * 
	 *@category 获取商品导入文件列表
	 *@author 邱磊
	 *@date 2015年11月11日 下午6:37:35
	 *@param
	 */
//	public Pagination getImportFileDataList(Pagination page);
	/**
	 * 
	 *@category 获取预览列表
	 *@author 邱磊
	 *@date 2015年11月12日 上午8:32:59
	 *@param
	 */
	public Pagination getImportGoodsView(Pagination page);
	public int importGoods(String fileId);
	
	public List<Map<String, Object>> checkReImport(Pagination page);
	public String getSysDicValue(String dicName);
	public Map<String, Object> getGoodsByCode(String goodsCode);

	Pagination getDelCompByLinxuan(Pagination page);

	Pagination getDelAreaByLinxuan(Pagination page);

	Pagination getAreaListByLinxuan(Pagination page);

	Pagination getBaseGoodsDelByLinxuan(Pagination page);
	
	/**
	 * 
	 *@category 获取药品配送关系列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月23日17:56:51
	 *@param page 
	 *@return
	 */
	Pagination getProjDrugList(Pagination page);
	/**
	 *@category 判断是否有权限去按配送企业选择医疗机构(生产企业)
	 *@author 应晓川
	 *@date 2015年11月23日19:27:25
	 *@param page 
	 *@return
	 */
	boolean isDelrelation(Pagination page);
		/**
	 *@category 获取配送企业列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日08:36:24
	 *@param page 
	 *@return
	 */
	Pagination getDelCompList(Pagination page);
	
	/**
	 *@category 获取医疗机构列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日08:36:24
	 *@param page 
	 *@return
	 */
	Pagination getHospList(Pagination page);
	
	
	/**
	 *@category 获取按配送企业已经选择了的医疗机构列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:22:01
	 *@param page 
	 *@return
	 */
	Pagination getHospJspList(Pagination page);
	
	/**
	 *@category 获取按医疗机构已经选择了的配送企业列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:22:51
	 *@param page 
	 *@return
	 */
	Pagination getCompJspList(Pagination page);
	
	
	/**
	 *@category 按配送企业设置未选择的医疗机构(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:26:52
	 *@param page 
	 *@return
	 */
	Pagination getDelHospJspList(Pagination page);
	
	/**
	 *@category 按医疗机构设置未选择的配送企业(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:27:15
	 *@param page 
	 *@return
	 */
	Pagination getDelCompJspList(Pagination page);
	/**
	 *@category  按配送企业设置医疗机构 (生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日16:51:28
	 *@return
	 */
	void setDelWithHosp(Pagination page);
	
	/**
	 *@category  按医疗机构设置配送企业 (生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日16:51:28
	 *@return
	 */
	void setDelWithComp(Pagination page);
	
	Pagination getTheDelCompList(Pagination page);

	Pagination getDelRelationHospList(Pagination page);

	Pagination getTheDelCompListByLinxuan(Pagination page);

	Pagination getDelRelationHospLog(Pagination page);

	Pagination getNoSetDelRelHospList(Pagination page);

	Pagination getNoSetDelRelHospListByLinxuan(Pagination page);

	int setHospByDelComp(List<Map<String, String>> list, String updUser);
	
	Pagination getDelCompListByLinxuan(Pagination page);
	
	Pagination getDelRelLog(Pagination page);
	public Pagination getHaveSetDel(Pagination page);
	public void batchDeleteHaveSetDel(String goodsCode,List<String> list,String userId);
	public Pagination getGoodsSelectComp(Pagination page);
	public void setBaseDelRelation(String goodsCode,List<BaseDelrelationForm> list,String userId,String gzfjydel);
	
	/**
	 * @category 保存不竞不限药品信息
	 * @author 韩守松
	 * @date   2016年1月13日
	 * @param  @param goods
	 */
	public void save(BaseGoods goods,SysUser user);
	
	/**
	 * @category 获取不竞不限商品数据信息
	 * @author 韩守松
	 * @date   2016年1月14日
	 * @param  @param page
	 * @param  @param data
	 * @param  @return
	 */
	public Pagination getNoJNoXGoodsData(Pagination page,DrugNoJNoX data);
}


